package com.coolingme.Stream;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * 字节型文件输入流，读取文件
 *
 * @author wangyue
 * @date 2019/3/31 14:17
 */
public class FileInputStramTest {

    public static void main(String[] args) {
        File file = new File("D://Java//IntelliJIDEA//workspace//java-learn//IO//file//test.txt");
//        readSingleStream(file);
        readByteStream(file);
    }

    /**
     * read()
     * 从该输入流读取下一个数据字节。
     *
     * @param file
     */
    public static void readSingleStream(File file) {
        FileInputStream in = null;
        try {
            in = new FileInputStream(file);
            int code = in.read();// 读取的字节对应Unicode码    0---65535
            while (code > 0) {
                System.out.print((char) code + "    ");
                code = in.read();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();//关闭流管道
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * read(byte[] b)
     * 从该输入流读取最多 byte.length个字节的数据到字节数组。
     *
     * @param file
     */
    public static void readByteStream(File file) {
        FileInputStream in = null;
        try {
            in = new FileInputStream(file);
            System.out.println("管道中的缓存字节数"+in.available());//返回流管道中还有多少缓存的字节数
            byte[] b = new byte[5];//创建一个空的数组-->小推车

            in.skip(5);// 跳过5字节

            int count = in.read(b);//去文件里读东西 装入数组内  count为读取到的有效字节个数
            while (count != -1) {
                String value = new String(b, 0, count);//获取从 第一个到 有效个数 的值
                System.out.println(value);
                count = in.read(b);//再将读取的内容  放入小推车中
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (in != null) {
                    in.close();//关闭流管道
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


}
